package com.ftg.elvis.mapper;

import com.ftg.elvis.pojo.Menu;
import com.ftg.elvis.pojo.Role;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface AdminRoleMapper {

	/**
	 * 查询你所有角色
	 * @param page
	 * @param limit
	 * @return
	 */
	@Select("select * from role limit #{arg0}, #{arg1}")
	List<Role> showAll(int page, int limit);

	/**
	 * 查询角色总数
	 * @return
	 */
	@Select("select count(*) from role")
	int getCount();

	/**
	 * 添加角色
	 * @param role
	 * @return
	 */
	@Insert("insert into role(role_name, description) values(#{role_name}, #{description})")
	int add(Role role);

	/**
	 * 删除角色
	 * @param rid
	 * @return
	 */
	@Delete("delete from role where rid = #{rid}")
	int delete(String rid);

	/**
	 * 修改角色信息
	 * @param role
	 * @return
	 */
	@Update("update role set role_name = #{role_name}, description = #{description} where rid = #{rid}")
	int update(Role role);

	/**
	 * 删除某个角色所有权限
	 * @param role_id
	 * @return
	 */
	@Delete("delete from role_menu where role_id = #{role_id}")
	int delMyMenusById(String role_id);

	/**
	 * 给某个角色赋某一个权
	 * @param id
	 * @param role_id
	 * @param menu_id
	 * @return
	 */
	@Insert("insert into role_menu(id, role_id, menu_id) values(#{arg0}, #{arg1}, #{arg2})")
	int addMyMenus(String id, String role_id, String menu_id);

	/**
	 * 查看某角色已有的权限
	 * @param role_id
	 * @return
	 */
	@Select("select m.mid, m.menu_name menuName,m.menu_path menuPath,m.pare_menu_id pareMenuId from role_menu r join menu m on r.menu_id = m.mid where r.role_id = #{role_id}")
	List<Menu> showMyMenus(String role_id);

	/**
	 * 查看所有权限
	 * @return
	 */
	@Select("select mid, menu_name menuName, menu_path menuPath, pare_menu_id pareMenuId from menu")
	List<Menu> showAllMenus();

	@Delete("delete from role_menu where role_id = #{rid}")
	void deleteMenu(String rid);
}
